/*
 * @Description: 关联关系 类型
 * @Author: chenju
 * @Date: 2021-11-08 15:37:36
 * @LastEditors: qingyang
 * @LastEditTime: 2023-07-25 17:03:55
 */

import { emissionTypeEnum } from '@/constants/enum';

interface IFactorList {
  standard: string;
  factorNo: string;
}
// 新增关联关系
export interface IAddRelation {
  frameworkNo: string;
  sourceNo: string;
  materialNo: string;
  dataUnit: string;
  factorList: IFactorList[];
}

export interface IUpdateRelation extends IAddRelation {
  relationNo: string;
}
// 批量添加关联关系 请求参数
export interface AddRelationParams {
  //排放源编号
  sourceNo: string;
  //排放源名称
  sourceName: string;
  //因子编号
  factorNo: string;
  //活动数据单位
  dataUnit: string;
  //因子名称
  factorName: string;
  //目录编号
  frameworkNo: string;
  //因子单位
  unit: string;
  //因子来源类型
  sourceType: string;
  //因子类型
  factorType: string;
}
[];

// 关联关系启用停用 请求参数
export interface UpdateRelationStatusParams {
  // 关联关系编码
  relationNo: string;
  // 启用状态：0禁用，1：启用
  disableFlag: string;
}

// 修改关联关系状态  入参
export interface batchUpdateStatusParams {
  // 关联关系编号
  relationNoList?: any;
  // 修改状态
  disableFlag?: null | string;
}

// 修改关联关系状态  返回
export interface batchUpdateStatusResult {
  // 更新关联数据
  resultList: {
    relationNo: string;
    factorName: string;
    sourceName: string;
    updateResult: string;
    failReason: string;
  }[];
  // 成功数量
  successNum: string;
  // 失败数量
  failNum: string;
  // 无需操作数
  skipNum: string;
}

// 关联关系查询 请求参数
export interface GetRelationListParams {
  // 关联结构id
  frameworkNo?: string;
  // 排放源
  sourceNo: string;
  // 排放源名称
  materialNo: string;
}

// 关联关系查询 返回数据
export interface GetRelationListResult {
  //关联关系编码
  relationNo: string;
  //关联关系启用状态：0禁用，1：启用
  relationFlag: boolean;
  //排放源编号
  sourceNo: string;
  //排放源状态
  sourceStatus: string;
  //排放源类型
  emissionType: string;
  //排放源名称
  sourceName: string;
  //排放源描述
  description: string;
  //因子编号
  factorNo: string;
  //因子状态（启用，停用）
  factorStatus: string;
  //因子名称
  factorName: string;
  //因子英文名称
  enName: string;
  //因子类型
  factorType: string;
  //	因子排放单位
  unit: string;
  //活动数据单位
  dataUnit: string;
  //gwp版本
  gwpVersion: string;
  //CO₂排放
  coEmission: string;
  //CH4排放
  chEmission: string;
  //N2O排放
  noEmission: string;
  //HFCs/PFCs排放
  hpEmission: string;
  //SF6排放
  sfEmission: string;
  //NF₃排放
  nfEmission: string;
  //CO₂的gwp值
  coGwp: string;
  //CH4的gwp值
  chGwp: string;
  //N2O的gwp值
  noGwp: string;
  //HFCs/PFCs的gwp值
  hpGwp: string;
  //SF6的gwp值
  sfGwp: string;
  //NF₃的gwp值
  nfGwp: string;
  //因子来源类型
  sourceType: string;
  //因子来源
  source: string;
  //	版本号
  version: string;
}

// 排放结构节点启动停用 请求参数
export interface UpdateEmissionStatusParams {
  // 排放结构目录code
  frameworkNo: string;
  // 变更后的状态值 ENABLE:	启用 	DISABLE:停用
  status: string;
}

// 排放结构（关联关系）节点添加 请求参数
export interface AddEmissionParams {
  // 目录父节点编号
  parentFrameworkNo: string;
  // 新增目录节点名称
  frameworkName: string;
}

// // 获取目录树 请求入参 无用
// export interface GetEmissionListParams {
//   // 	目录编码
//   frameworkNo: number;
//   // 目录名称
//   frameworkName: number;
//   // 状态；ENABLE	启用	DISABLE	禁用/停用
//   status: string;
//   // 启用标志0：未启用；1启用
//   disableFlag: string;
//   // 子目录结构同上
//   childNodeList: null | GetEmissionListParams[];
// }

export interface GetEmissionListResult {
  // 	目录编码
  frameworkNo: string;
  // 目录名称
  frameworkName: string;
  // 状态；ENABLE	启用	DISABLE	禁用/停用
  status?: 'ENABLE' | 'DISABLE';
  // 启用标志0：未启用；1启用
  disableFlag?: string;
  // 子目录结构同上
  childNodeList?: null | GetEmissionListResult[];
}

// 能源/燃料选择 请求出参
export interface GetFactorOptionsResult {
  // 	因子编号
  factorNo: string;
  // 因子名称，
  factorDataString: string;
}

// 排放源 请求出参
export interface GetEmissionOptionsResult {
  // 	类型
  type: keyof typeof emissionTypeEnum;
  emissionSource: Array<GetEmissionOptionsResultChild>;
}

interface GetEmissionOptionsResultChild {
  sourceNo: string;
  name: string;
}

// 关联关系批量新增弹窗数据获取 请求入参
export interface GetEmissionFactorParams {
  // 	排放源编号
  sourceNo: string;
  // 因子编号
  factorNo: string;
}
// 关联关系批量新增弹窗数据获取 请求出参
export interface GetEmissionFactorResult {
  // 	排放源编号
  sourceNo: string;
  // 	排放源编号
  name: string;
  // 因子编号
  factorNo: string;
  // 因子名称
  factorName: string;
  // 因子类型
  type: string;
  // 因子单位
  unit: string;
  // 活动数据单位
  dataUnit: string;
  // 因子来源类型
  sourceType: string;
  // 因子来源
  source: string;
  // 版本号
  version: string;
  //CO₂排放
  coEmission: string;
  //CH4排放
  chEmission: string;
  //N2O排放
  noEmission: string;
  //HFCs/PFCs排放
  hpEmission: string;
  //SF6排放
  sfEmission: string;
  //NF₃排放
  nfEmission: string;
  frameworkNo: any;
}
